Chod hore
Predchádzajúca stránka Nasledujúca stránka Začiatok kapitoly Koniec kapitoly Začiatok kurzu Koniec kurzu


13. PROCEDÚRY, FUNKCIE


V tejto časti sa budeme zaoberať procedúrami a funkciami. Procedúra je skupina príkazov, ktoré sa vykonajú po zadaní jeho identifikátora s patričnými parametrami. Procedúru používame, keď istá skupina príkazov sa opakuje viackrát alebo ak čitateľnosť programu sa zlepší.



13.1 Procedúry


Štruktúra procedúry sa veľmi podobá na štruktúru programu:

{ Hlavička procedúry }
Procedure IdentifikatorProcedury [(ZoznamParametrov)] ;
{ Deklaračná časť procedúry }
Const
...
Type
...
Var
...
{ Výkonná časť procedúry }
Begin
...
End ;


Deklarácie, uvedené v hlavnom programe sú tzv. globálne - sú známe všade v programe. Kým deklarácie, uvedené v procedúre sú tzv. lokálne - sú známe iba v danej procedúre. Odvolanie na ne v inej časti programu - syntaktická chyba.

V deklarácii uvedené parametre sú tzv. formálne, parametre použité pri volaní procedúry sú tzv. skutočné. Formálne parametre môžeme zadať nasledovne:

[Var] IdentifikatorPremennej [,DalsiIdPr] [: TypPremennej] ;


Ak nepoužijeme služobné slovo Var, potom sa jedná a parametre odovzdané hodnotou. V tomto prípade pri volaní procedúry formálny parameter dostane aktuálnu hodnotu skutočného parametra a všetky činnosti sa budú prevádzať s lokálnou premennou - pôvodná hodnota skutočného parametra sa v tomto prípade nemení. Ak použijeme služobné slovo Var, potom sa jedná o parametre, ktoré pracujú s pamäťovým miestom. V tomto prípade pri volaní procedúry formálnemu parametru sa priradí pamäťové miesto zodpovedajúceho skutočného parametra a všetky činnosti sa budú prevádzať so skutočným parametrom - pôvodná hodnota skutočného parametra sa v tomto prípade teda patrične zmení.

Každá procedúra môže obsahovať ďalšiu procedúru, ktorá bude známa iba v tejto vonkajšej procedúre. Formálne parametre vnútornej procedúry budú známe iba vo vnútornej procedúre. Formálne parametre vonkajšej procedúry a premenné hlavného programu budú známe ako globálne aj vo vnútornej procedúre.

TypPremennej môžeme nezadať iba v prípade, keď sa jedná o parametre pracujúce s pamäťovým miestom - lebo v tomto prípade vždy je to pamäťové miesto, teda sa jedná o 4 bájty (Byte).



13.2 Funkcie


Štruktúra funkcie sa veľmi podobá na štruktúru procedúry:

{ Hlavička funkcie }
Function IdentifikatorFunkcie [(ZoznamParametrov)] : IdentifikatorTypu ;
{ Deklaračná časť funkcie }
Const
...
Type
...
Var
...
{ Výkonná časť funkcie }
Begin
...
IdentifikatorFunkcie := Vyraz ;
End ;


Pravidlá:

  • Funkcia vždy vracia jednu hodnotu.
  • Funkcia vždy vracia iba jednu hodnotu.
  • Na výsledok funkcie sa odvolávame s identifikátorom funkcie.
  • Typ výsledku môže byť iba ordinárny, reálny, reťazec alebo ukazovateľ (uvedieme neskôr).
  • Používané typy musia byť deklarovanými.
  • V tele funkcie aspoň raz musíme priradiť výsledok identifikátoru funkcie.


Rekurzia

Funkcie môžeme volať aj rekurzívne. To znamená, že funkcia bude seba volať v tele svojej výkonnej časti. Je to možné, ale musíme dávať pozor, aby sme definovali podmienku ukončenia rekurzia. V opačnom prípade vyrobíme nekonečný cyklus.

Napr. výpočet súčtu 1+2+...+N:

Obr13_1